# 闭包
def outer():
    outa = 1
    print('a = {}'.format(outa))

    def inner():
        # outa = 2是在inner()中重新定义了一个变量
        # 要说明outa是外层函数定义的，需要使用nonlocal声明
        nonlocal outa
        outa = 2
        print('a = {}'.format(outa))

    return inner


outer()()
